package com.dt.platform.domain.hr;

import com.github.foxnic.dao.entity.Entity;
import io.swagger.annotations.ApiModel;
import javax.persistence.Table;
import com.github.foxnic.sql.meta.DBTable;
import com.dt.platform.constants.db.HrTables.HR_PERSON_TRANSFER_ACT;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.persistence.Transient;
import com.github.foxnic.api.swagger.EnumFor;
import javax.persistence.Id;
import org.github.foxnic.web.domain.system.DictItem;
import org.github.foxnic.web.domain.hrm.Employee;
import org.github.foxnic.web.domain.hrm.Position;
import org.github.foxnic.web.domain.hrm.Organization;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.foxnic.commons.lang.DataParser;
import java.util.Map;
import com.github.foxnic.dao.entity.EntityContext;
import com.dt.platform.domain.hr.meta.PersonTransferActMeta;
import com.github.foxnic.sql.data.ExprRcd;



/**
 * 员工调动记录
 * <p>员工调动记录 , 数据表 hr_person_transfer_act 的PO类型</p>
 * @author 金杰 , maillank@qq.com
 * @since 2024-09-07 08:49:56
 * @sign 81CB5EB81947C37BFA24D575DF03DBD6
 * 此文件由工具自动生成，请勿修改。若表结构或配置发生变动，请使用工具重新生成。
*/

@Table(name = "hr_person_transfer_act")
@ApiModel(description = "员工调动记录 ; 员工调动记录 , 数据表 hr_person_transfer_act 的PO类型")
public class PersonTransferAct extends Entity {

	private static final long serialVersionUID = 1L;

	public static final DBTable TABLE =HR_PERSON_TRANSFER_ACT.$TABLE;
	
	/**
	 * 内容：内容
	*/
	@ApiModelProperty(required = false,value="内容" , notes = "内容" , example = "12")
	private String content;
	
	/**
	 * 创建人ID：创建人ID
	*/
	@ApiModelProperty(required = false,value="创建人ID" , notes = "创建人ID" , example = "110588348101165911")
	private String createBy;
	
	/**
	 * 创建时间：创建时间
	*/
	@ApiModelProperty(required = false,value="创建时间" , notes = "创建时间" , example = "2024-08-31 12:15:27")
	private Date createTime;
	
	/**
	 * 删除人ID：删除人ID
	*/
	@ApiModelProperty(required = false,value="删除人ID" , notes = "删除人ID")
	private String deleteBy;
	
	/**
	 * 删除时间：删除时间
	*/
	@ApiModelProperty(required = false,value="删除时间" , notes = "删除时间")
	private Date deleteTime;
	
	/**
	 * 是否已删除：是否已删除
	*/
	@ApiModelProperty(required = true,value="是否已删除" , notes = "是否已删除" , example = "0")
	private Integer deleted;
	@Transient
	@EnumFor("deleted")
	private Boolean deletedBool;
	
	/**
	 * 附件：附件
	*/
	@ApiModelProperty(required = false,value="附件" , notes = "附件")
	private String fileIds;
	
	/**
	 * 主键：主键
	*/
	@Id
	@ApiModelProperty(required = true,value="主键" , notes = "主键" , example = "599539370059366405")
	private String id;
	
	/**
	 * 备注：备注
	*/
	@ApiModelProperty(required = false,value="备注" , notes = "备注" , example = "1212")
	private String note;
	
	/**
	 * 经办时间：经办时间
	*/
	@ApiModelProperty(required = false,value="经办时间" , notes = "经办时间")
	private Date operTime;
	
	/**
	 * 经办人：经办人
	*/
	@ApiModelProperty(required = false,value="经办人" , notes = "经办人" , example = "676870860652412928")
	private String operUserId;
	
	/**
	 * 调动人员：调动人员
	*/
	@ApiModelProperty(required = false,value="调动人员" , notes = "调动人员" , example = "808428146557714432")
	private String personId;
	
	/**
	 * 办理状态：办理状态
	*/
	@ApiModelProperty(required = false,value="办理状态" , notes = "办理状态" , example = "finish")
	private String status;
	
	/**
	 * 调动部门：调动部门
	*/
	@ApiModelProperty(required = false,value="调动部门" , notes = "调动部门")
	private String toOrgPos;
	
	/**
	 * 部门调整：部门调整
	*/
	@ApiModelProperty(required = false,value="部门调整" , notes = "部门调整")
	private String toOrgPosStatus;
	
	/**
	 * 调动岗位：调动岗位
	*/
	@ApiModelProperty(required = false,value="调动岗位" , notes = "调动岗位")
	private String toPos;
	
	/**
	 * 岗位调整：岗位调整
	*/
	@ApiModelProperty(required = false,value="岗位调整" , notes = "岗位调整")
	private String toPosStatus;
	
	/**
	 * 调动日期：调动日期
	*/
	@ApiModelProperty(required = false,value="调动日期" , notes = "调动日期" , example = "2024-08-28 12:00:00")
	private Date transferDate;
	
	/**
	 * 调动方式：调动方式
	*/
	@ApiModelProperty(required = false,value="调动方式" , notes = "调动方式" , example = "wd")
	private String transferType;
	
	/**
	 * 修改人ID：修改人ID
	*/
	@ApiModelProperty(required = false,value="修改人ID" , notes = "修改人ID")
	private String updateBy;
	
	/**
	 * 修改时间：修改时间
	*/
	@ApiModelProperty(required = false,value="修改时间" , notes = "修改时间")
	private Date updateTime;
	
	/**
	 * version：version
	*/
	@ApiModelProperty(required = true,value="version" , notes = "version" , example = "1")
	private Integer version;
	
	/**
	 * person：person
	*/
	@ApiModelProperty(required = false,value="person" , notes = "person")
	private Person person;
	
	/**
	 * typeDict：typeDict
	*/
	@ApiModelProperty(required = false,value="typeDict" , notes = "typeDict")
	private DictItem typeDict;
	
	/**
	 * oper：oper
	*/
	@ApiModelProperty(required = false,value="oper" , notes = "oper")
	private Employee oper;
	
	/**
	 * 主岗：作为员工时，所属的主岗
	*/
	@ApiModelProperty(required = false,value="主岗" , notes = "作为员工时，所属的主岗")
	private Position orgPos;
	
	/**
	 * 主岗：作为员工时，所属的主岗
	*/
	@ApiModelProperty(required = false,value="主岗" , notes = "作为员工时，所属的主岗")
	private PositionInfo posInfo;
	
	/**
	 * 部门：作为员工时，部门
	*/
	@ApiModelProperty(required = false,value="部门" , notes = "作为员工时，部门")
	private Organization org;
	
	/**
	 * 主岗ID：只有一个
	*/
	@ApiModelProperty(required = false,value="主岗ID" , notes = "只有一个")
	private String orgPosId;
	
	/**
	 * 获得 内容<br>
	 * 内容
	 * @return 内容
	*/
	public String getContent() {
		return content;
	}
	
	/**
	 * 设置 内容
	 * @param content 内容
	 * @return 当前对象
	*/
	public PersonTransferAct setContent(String content) {
		this.content=content;
		return this;
	}
	
	/**
	 * 获得 创建人ID<br>
	 * 创建人ID
	 * @return 创建人ID
	*/
	public String getCreateBy() {
		return createBy;
	}
	
	/**
	 * 设置 创建人ID
	 * @param createBy 创建人ID
	 * @return 当前对象
	*/
	public PersonTransferAct setCreateBy(String createBy) {
		this.createBy=createBy;
		return this;
	}
	
	/**
	 * 获得 创建时间<br>
	 * 创建时间
	 * @return 创建时间
	*/
	public Date getCreateTime() {
		return createTime;
	}
	
	/**
	 * 设置 创建时间
	 * @param createTime 创建时间
	 * @return 当前对象
	*/
	public PersonTransferAct setCreateTime(Date createTime) {
		this.createTime=createTime;
		return this;
	}
	
	/**
	 * 获得 删除人ID<br>
	 * 删除人ID
	 * @return 删除人ID
	*/
	public String getDeleteBy() {
		return deleteBy;
	}
	
	/**
	 * 设置 删除人ID
	 * @param deleteBy 删除人ID
	 * @return 当前对象
	*/
	public PersonTransferAct setDeleteBy(String deleteBy) {
		this.deleteBy=deleteBy;
		return this;
	}
	
	/**
	 * 获得 删除时间<br>
	 * 删除时间
	 * @return 删除时间
	*/
	public Date getDeleteTime() {
		return deleteTime;
	}
	
	/**
	 * 设置 删除时间
	 * @param deleteTime 删除时间
	 * @return 当前对象
	*/
	public PersonTransferAct setDeleteTime(Date deleteTime) {
		this.deleteTime=deleteTime;
		return this;
	}
	
	/**
	 * 获得 是否已删除<br>
	 * 是否已删除
	 * @return 是否已删除
	*/
	public Integer getDeleted() {
		return deleted;
	}
	
	/**
	 * 获得 是否已删除 的投影属性<br>
	 * 等价于 getDeleted 方法，获得对应的枚举类型
	 * @return 是否已删除
	*/
	@Transient
	public Boolean isDeleted() {
		if(this.deletedBool==null) {
			this.deletedBool=DataParser.parseBoolean(deleted);
		}
		return this.deletedBool ;
	}
	
	/**
	 * 设置 是否已删除
	 * @param deleted 是否已删除
	 * @return 当前对象
	*/
	@JsonProperty("deleted")
	public PersonTransferAct setDeleted(Integer deleted) {
		this.deleted=deleted;
		this.deletedBool=DataParser.parseBoolean(deleted);
		return this;
	}
	
	/**
	 * 设置 是否已删除的投影属性，等同于设置 是否已删除
	 * @param deletedBool 是否已删除
	 * @return 当前对象
	*/
	@Transient
	public PersonTransferAct setDeleted(Boolean deletedBool) {
		if(deletedBool==null) {
			this.deleted=null;
		} else {
			this.deleted=deletedBool?1:0;
		}
		this.deletedBool=deletedBool;
		return this;
	}
	
	/**
	 * 获得 附件<br>
	 * 附件
	 * @return 附件
	*/
	public String getFileIds() {
		return fileIds;
	}
	
	/**
	 * 设置 附件
	 * @param fileIds 附件
	 * @return 当前对象
	*/
	public PersonTransferAct setFileIds(String fileIds) {
		this.fileIds=fileIds;
		return this;
	}
	
	/**
	 * 获得 主键<br>
	 * 主键
	 * @return 主键
	*/
	public String getId() {
		return id;
	}
	
	/**
	 * 设置 主键
	 * @param id 主键
	 * @return 当前对象
	*/
	public PersonTransferAct setId(String id) {
		this.id=id;
		return this;
	}
	
	/**
	 * 获得 备注<br>
	 * 备注
	 * @return 备注
	*/
	public String getNote() {
		return note;
	}
	
	/**
	 * 设置 备注
	 * @param note 备注
	 * @return 当前对象
	*/
	public PersonTransferAct setNote(String note) {
		this.note=note;
		return this;
	}
	
	/**
	 * 获得 经办时间<br>
	 * 经办时间
	 * @return 经办时间
	*/
	public Date getOperTime() {
		return operTime;
	}
	
	/**
	 * 设置 经办时间
	 * @param operTime 经办时间
	 * @return 当前对象
	*/
	public PersonTransferAct setOperTime(Date operTime) {
		this.operTime=operTime;
		return this;
	}
	
	/**
	 * 获得 经办人<br>
	 * 经办人
	 * @return 经办人
	*/
	public String getOperUserId() {
		return operUserId;
	}
	
	/**
	 * 设置 经办人
	 * @param operUserId 经办人
	 * @return 当前对象
	*/
	public PersonTransferAct setOperUserId(String operUserId) {
		this.operUserId=operUserId;
		return this;
	}
	
	/**
	 * 获得 调动人员<br>
	 * 调动人员
	 * @return 调动人员
	*/
	public String getPersonId() {
		return personId;
	}
	
	/**
	 * 设置 调动人员
	 * @param personId 调动人员
	 * @return 当前对象
	*/
	public PersonTransferAct setPersonId(String personId) {
		this.personId=personId;
		return this;
	}
	
	/**
	 * 获得 办理状态<br>
	 * 办理状态
	 * @return 办理状态
	*/
	public String getStatus() {
		return status;
	}
	
	/**
	 * 设置 办理状态
	 * @param status 办理状态
	 * @return 当前对象
	*/
	public PersonTransferAct setStatus(String status) {
		this.status=status;
		return this;
	}
	
	/**
	 * 获得 调动部门<br>
	 * 调动部门
	 * @return 调动部门
	*/
	public String getToOrgPos() {
		return toOrgPos;
	}
	
	/**
	 * 设置 调动部门
	 * @param toOrgPos 调动部门
	 * @return 当前对象
	*/
	public PersonTransferAct setToOrgPos(String toOrgPos) {
		this.toOrgPos=toOrgPos;
		return this;
	}
	
	/**
	 * 获得 部门调整<br>
	 * 部门调整
	 * @return 部门调整
	*/
	public String getToOrgPosStatus() {
		return toOrgPosStatus;
	}
	
	/**
	 * 设置 部门调整
	 * @param toOrgPosStatus 部门调整
	 * @return 当前对象
	*/
	public PersonTransferAct setToOrgPosStatus(String toOrgPosStatus) {
		this.toOrgPosStatus=toOrgPosStatus;
		return this;
	}
	
	/**
	 * 获得 调动岗位<br>
	 * 调动岗位
	 * @return 调动岗位
	*/
	public String getToPos() {
		return toPos;
	}
	
	/**
	 * 设置 调动岗位
	 * @param toPos 调动岗位
	 * @return 当前对象
	*/
	public PersonTransferAct setToPos(String toPos) {
		this.toPos=toPos;
		return this;
	}
	
	/**
	 * 获得 岗位调整<br>
	 * 岗位调整
	 * @return 岗位调整
	*/
	public String getToPosStatus() {
		return toPosStatus;
	}
	
	/**
	 * 设置 岗位调整
	 * @param toPosStatus 岗位调整
	 * @return 当前对象
	*/
	public PersonTransferAct setToPosStatus(String toPosStatus) {
		this.toPosStatus=toPosStatus;
		return this;
	}
	
	/**
	 * 获得 调动日期<br>
	 * 调动日期
	 * @return 调动日期
	*/
	public Date getTransferDate() {
		return transferDate;
	}
	
	/**
	 * 设置 调动日期
	 * @param transferDate 调动日期
	 * @return 当前对象
	*/
	public PersonTransferAct setTransferDate(Date transferDate) {
		this.transferDate=transferDate;
		return this;
	}
	
	/**
	 * 获得 调动方式<br>
	 * 调动方式
	 * @return 调动方式
	*/
	public String getTransferType() {
		return transferType;
	}
	
	/**
	 * 设置 调动方式
	 * @param transferType 调动方式
	 * @return 当前对象
	*/
	public PersonTransferAct setTransferType(String transferType) {
		this.transferType=transferType;
		return this;
	}
	
	/**
	 * 获得 修改人ID<br>
	 * 修改人ID
	 * @return 修改人ID
	*/
	public String getUpdateBy() {
		return updateBy;
	}
	
	/**
	 * 设置 修改人ID
	 * @param updateBy 修改人ID
	 * @return 当前对象
	*/
	public PersonTransferAct setUpdateBy(String updateBy) {
		this.updateBy=updateBy;
		return this;
	}
	
	/**
	 * 获得 修改时间<br>
	 * 修改时间
	 * @return 修改时间
	*/
	public Date getUpdateTime() {
		return updateTime;
	}
	
	/**
	 * 设置 修改时间
	 * @param updateTime 修改时间
	 * @return 当前对象
	*/
	public PersonTransferAct setUpdateTime(Date updateTime) {
		this.updateTime=updateTime;
		return this;
	}
	
	/**
	 * 获得 version<br>
	 * version
	 * @return version
	*/
	public Integer getVersion() {
		return version;
	}
	
	/**
	 * 设置 version
	 * @param version version
	 * @return 当前对象
	*/
	public PersonTransferAct setVersion(Integer version) {
		this.version=version;
		return this;
	}
	
	/**
	 * 获得 person<br>
	 * person
	 * @return person
	*/
	public Person getPerson() {
		return person;
	}
	
	/**
	 * 设置 person
	 * @param person person
	 * @return 当前对象
	*/
	public PersonTransferAct setPerson(Person person) {
		this.person=person;
		return this;
	}
	
	/**
	 * 获得 typeDict<br>
	 * typeDict
	 * @return typeDict
	*/
	public DictItem getTypeDict() {
		return typeDict;
	}
	
	/**
	 * 设置 typeDict
	 * @param typeDict typeDict
	 * @return 当前对象
	*/
	public PersonTransferAct setTypeDict(DictItem typeDict) {
		this.typeDict=typeDict;
		return this;
	}
	
	/**
	 * 获得 oper<br>
	 * oper
	 * @return oper
	*/
	public Employee getOper() {
		return oper;
	}
	
	/**
	 * 设置 oper
	 * @param oper oper
	 * @return 当前对象
	*/
	public PersonTransferAct setOper(Employee oper) {
		this.oper=oper;
		return this;
	}
	
	/**
	 * 获得 主岗<br>
	 * 作为员工时，所属的主岗
	 * @return 主岗
	*/
	public Position getOrgPos() {
		return orgPos;
	}
	
	/**
	 * 设置 主岗
	 * @param orgPos 主岗
	 * @return 当前对象
	*/
	public PersonTransferAct setOrgPos(Position orgPos) {
		this.orgPos=orgPos;
		return this;
	}
	
	/**
	 * 获得 主岗<br>
	 * 作为员工时，所属的主岗
	 * @return 主岗
	*/
	public PositionInfo getPosInfo() {
		return posInfo;
	}
	
	/**
	 * 设置 主岗
	 * @param posInfo 主岗
	 * @return 当前对象
	*/
	public PersonTransferAct setPosInfo(PositionInfo posInfo) {
		this.posInfo=posInfo;
		return this;
	}
	
	/**
	 * 获得 部门<br>
	 * 作为员工时，部门
	 * @return 部门
	*/
	public Organization getOrg() {
		return org;
	}
	
	/**
	 * 设置 部门
	 * @param org 部门
	 * @return 当前对象
	*/
	public PersonTransferAct setOrg(Organization org) {
		this.org=org;
		return this;
	}
	
	/**
	 * 获得 主岗ID<br>
	 * 只有一个
	 * @return 主岗ID
	*/
	public String getOrgPosId() {
		return orgPosId;
	}
	
	/**
	 * 设置 主岗ID
	 * @param orgPosId 主岗ID
	 * @return 当前对象
	*/
	public PersonTransferAct setOrgPosId(String orgPosId) {
		this.orgPosId=orgPosId;
		return this;
	}

	/**
	 * 将自己转换成指定类型的PO
	 * @param poType  PO类型
	 * @return PersonTransferAct , 转换好的 PersonTransferAct 对象
	*/
	@Transient
	public <T extends Entity> T toPO(Class<T> poType) {
		return EntityContext.create(poType, this);
	}

	/**
	 * 将自己转换成任意指定类型
	 * @param pojoType  Pojo类型
	 * @return PersonTransferAct , 转换好的 PoJo 对象
	*/
	@Transient
	public <T> T toPojo(Class<T> pojoType) {
		if(Entity.class.isAssignableFrom(pojoType)) {
			return (T)this.toPO((Class<Entity>)pojoType);
		}
		try {
			T pojo=pojoType.newInstance();
			EntityContext.copyProperties(pojo, this);
			return pojo;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 克隆当前对象
	*/
	@Transient
	public PersonTransferAct clone() {
		return duplicate(true);
	}

	/**
	 * 复制当前对象
	 * @param all 是否复制全部属性，当 false 时，仅复制来自数据表的属性
	*/
	@Transient
	public PersonTransferAct duplicate(boolean all) {
		com.dt.platform.domain.hr.meta.PersonTransferActMeta.$$proxy$$ inst = new com.dt.platform.domain.hr.meta.PersonTransferActMeta.$$proxy$$();
		inst.setNote(this.getNote());
		inst.setOperUserId(this.getOperUserId());
		inst.setToOrgPos(this.getToOrgPos());
		inst.setUpdateTime(this.getUpdateTime());
		inst.setTransferDate(this.getTransferDate());
		inst.setVersion(this.getVersion());
		inst.setContent(this.getContent());
		inst.setToPos(this.getToPos());
		inst.setCreateBy(this.getCreateBy());
		inst.setDeleted(this.getDeleted());
		inst.setToOrgPosStatus(this.getToOrgPosStatus());
		inst.setCreateTime(this.getCreateTime());
		inst.setDeleteTime(this.getDeleteTime());
		inst.setFileIds(this.getFileIds());
		inst.setUpdateBy(this.getUpdateBy());
		inst.setToPosStatus(this.getToPosStatus());
		inst.setDeleteBy(this.getDeleteBy());
		inst.setTransferType(this.getTransferType());
		inst.setPersonId(this.getPersonId());
		inst.setId(this.getId());
		inst.setOperTime(this.getOperTime());
		inst.setStatus(this.getStatus());
		if(all) {
			inst.setOrgPos(this.getOrgPos());
			inst.setOrg(this.getOrg());
			inst.setPerson(this.getPerson());
			inst.setTypeDict(this.getTypeDict());
			inst.setPosInfo(this.getPosInfo());
			inst.setOper(this.getOper());
			inst.setOrgPosId(this.getOrgPosId());
		}
		inst.clearModifies();
		return inst;
	}

	/**
	 * 克隆当前对象
	*/
	@Transient
	public PersonTransferAct clone(boolean deep) {
		return EntityContext.clone(PersonTransferAct.class,this,deep);
	}

	/**
	 * 将 Map 转换成 PersonTransferAct
	 * @param personTransferActMap 包含实体信息的 Map 对象
	 * @return PersonTransferAct , 转换好的的 PersonTransferAct 对象
	*/
	@Transient
	public static PersonTransferAct createFrom(Map<String,Object> personTransferActMap) {
		if(personTransferActMap==null) return null;
		PersonTransferAct po = create();
		EntityContext.copyProperties(po,personTransferActMap);
		po.clearModifies();
		return po;
	}

	/**
	 * 将 Pojo 转换成 PersonTransferAct
	 * @param pojo 包含实体信息的 Pojo 对象
	 * @return PersonTransferAct , 转换好的的 PersonTransferAct 对象
	*/
	@Transient
	public static PersonTransferAct createFrom(Object pojo) {
		if(pojo==null) return null;
		PersonTransferAct po = create();
		EntityContext.copyProperties(po,pojo);
		po.clearModifies();
		return po;
	}

	/**
	 * 创建一个 PersonTransferAct，等同于 new
	 * @return PersonTransferAct 对象
	*/
	@Transient
	public static PersonTransferAct create() {
		return new com.dt.platform.domain.hr.meta.PersonTransferActMeta.$$proxy$$();
	}

	/**
	 * 从 Map 读取
	 * @param map 记录数据
	 * @param cast 是否用 DataParser 进行类型转换
	 * @return  是否读取成功
	*/
	public boolean read(Map<String, Object> map,boolean cast) {
		if(map==null) return false;
		if(cast) {
			this.setNote(DataParser.parse(String.class, map.get(PersonTransferActMeta.NOTE)));
			this.setOperUserId(DataParser.parse(String.class, map.get(PersonTransferActMeta.OPER_USER_ID)));
			this.setToOrgPos(DataParser.parse(String.class, map.get(PersonTransferActMeta.TO_ORG_POS)));
			this.setUpdateTime(DataParser.parse(Date.class, map.get(PersonTransferActMeta.UPDATE_TIME)));
			this.setTransferDate(DataParser.parse(Date.class, map.get(PersonTransferActMeta.TRANSFER_DATE)));
			this.setVersion(DataParser.parse(Integer.class, map.get(PersonTransferActMeta.VERSION)));
			this.setContent(DataParser.parse(String.class, map.get(PersonTransferActMeta.CONTENT)));
			this.setToPos(DataParser.parse(String.class, map.get(PersonTransferActMeta.TO_POS)));
			this.setCreateBy(DataParser.parse(String.class, map.get(PersonTransferActMeta.CREATE_BY)));
			this.setDeleted(DataParser.parse(Integer.class, map.get(PersonTransferActMeta.DELETED)));
			this.setToOrgPosStatus(DataParser.parse(String.class, map.get(PersonTransferActMeta.TO_ORG_POS_STATUS)));
			this.setCreateTime(DataParser.parse(Date.class, map.get(PersonTransferActMeta.CREATE_TIME)));
			this.setDeleteTime(DataParser.parse(Date.class, map.get(PersonTransferActMeta.DELETE_TIME)));
			this.setFileIds(DataParser.parse(String.class, map.get(PersonTransferActMeta.FILE_IDS)));
			this.setUpdateBy(DataParser.parse(String.class, map.get(PersonTransferActMeta.UPDATE_BY)));
			this.setToPosStatus(DataParser.parse(String.class, map.get(PersonTransferActMeta.TO_POS_STATUS)));
			this.setDeleteBy(DataParser.parse(String.class, map.get(PersonTransferActMeta.DELETE_BY)));
			this.setTransferType(DataParser.parse(String.class, map.get(PersonTransferActMeta.TRANSFER_TYPE)));
			this.setPersonId(DataParser.parse(String.class, map.get(PersonTransferActMeta.PERSON_ID)));
			this.setId(DataParser.parse(String.class, map.get(PersonTransferActMeta.ID)));
			this.setOperTime(DataParser.parse(Date.class, map.get(PersonTransferActMeta.OPER_TIME)));
			this.setStatus(DataParser.parse(String.class, map.get(PersonTransferActMeta.STATUS)));
			// others
			this.setOrgPos(DataParser.parse(Position.class, map.get(PersonTransferActMeta.ORG_POS)));
			this.setOrg(DataParser.parse(Organization.class, map.get(PersonTransferActMeta.ORG)));
			this.setPerson(DataParser.parse(Person.class, map.get(PersonTransferActMeta.PERSON)));
			this.setTypeDict(DataParser.parse(DictItem.class, map.get(PersonTransferActMeta.TYPE_DICT)));
			this.setPosInfo(DataParser.parse(PositionInfo.class, map.get(PersonTransferActMeta.POS_INFO)));
			this.setOper(DataParser.parse(Employee.class, map.get(PersonTransferActMeta.OPER)));
			this.setOrgPosId(DataParser.parse(String.class, map.get(PersonTransferActMeta.ORG_POS_ID)));
			return true;
		} else {
			try {
				this.setNote( (String)map.get(PersonTransferActMeta.NOTE));
				this.setOperUserId( (String)map.get(PersonTransferActMeta.OPER_USER_ID));
				this.setToOrgPos( (String)map.get(PersonTransferActMeta.TO_ORG_POS));
				this.setUpdateTime( (Date)map.get(PersonTransferActMeta.UPDATE_TIME));
				this.setTransferDate( (Date)map.get(PersonTransferActMeta.TRANSFER_DATE));
				this.setVersion( (Integer)map.get(PersonTransferActMeta.VERSION));
				this.setContent( (String)map.get(PersonTransferActMeta.CONTENT));
				this.setToPos( (String)map.get(PersonTransferActMeta.TO_POS));
				this.setCreateBy( (String)map.get(PersonTransferActMeta.CREATE_BY));
				this.setDeleted( (Integer)map.get(PersonTransferActMeta.DELETED));
				this.setToOrgPosStatus( (String)map.get(PersonTransferActMeta.TO_ORG_POS_STATUS));
				this.setCreateTime( (Date)map.get(PersonTransferActMeta.CREATE_TIME));
				this.setDeleteTime( (Date)map.get(PersonTransferActMeta.DELETE_TIME));
				this.setFileIds( (String)map.get(PersonTransferActMeta.FILE_IDS));
				this.setUpdateBy( (String)map.get(PersonTransferActMeta.UPDATE_BY));
				this.setToPosStatus( (String)map.get(PersonTransferActMeta.TO_POS_STATUS));
				this.setDeleteBy( (String)map.get(PersonTransferActMeta.DELETE_BY));
				this.setTransferType( (String)map.get(PersonTransferActMeta.TRANSFER_TYPE));
				this.setPersonId( (String)map.get(PersonTransferActMeta.PERSON_ID));
				this.setId( (String)map.get(PersonTransferActMeta.ID));
				this.setOperTime( (Date)map.get(PersonTransferActMeta.OPER_TIME));
				this.setStatus( (String)map.get(PersonTransferActMeta.STATUS));
				// others
				this.setOrgPos( (Position)map.get(PersonTransferActMeta.ORG_POS));
				this.setOrg( (Organization)map.get(PersonTransferActMeta.ORG));
				this.setPerson( (Person)map.get(PersonTransferActMeta.PERSON));
				this.setTypeDict( (DictItem)map.get(PersonTransferActMeta.TYPE_DICT));
				this.setPosInfo( (PositionInfo)map.get(PersonTransferActMeta.POS_INFO));
				this.setOper( (Employee)map.get(PersonTransferActMeta.OPER));
				this.setOrgPosId( (String)map.get(PersonTransferActMeta.ORG_POS_ID));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
	}

	/**
	 * 从 Map 读取
	 * @param r 记录数据
	 * @param cast 是否用 DataParser 进行类型转换
	 * @return  是否读取成功
	*/
	public boolean read(ExprRcd r,boolean cast) {
		if(r==null) return false;
		if(cast) {
			this.setNote(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.NOTE)));
			this.setOperUserId(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.OPER_USER_ID)));
			this.setToOrgPos(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.TO_ORG_POS)));
			this.setUpdateTime(DataParser.parse(Date.class, r.getValue(PersonTransferActMeta.UPDATE_TIME)));
			this.setTransferDate(DataParser.parse(Date.class, r.getValue(PersonTransferActMeta.TRANSFER_DATE)));
			this.setVersion(DataParser.parse(Integer.class, r.getValue(PersonTransferActMeta.VERSION)));
			this.setContent(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.CONTENT)));
			this.setToPos(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.TO_POS)));
			this.setCreateBy(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.CREATE_BY)));
			this.setDeleted(DataParser.parse(Integer.class, r.getValue(PersonTransferActMeta.DELETED)));
			this.setToOrgPosStatus(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.TO_ORG_POS_STATUS)));
			this.setCreateTime(DataParser.parse(Date.class, r.getValue(PersonTransferActMeta.CREATE_TIME)));
			this.setDeleteTime(DataParser.parse(Date.class, r.getValue(PersonTransferActMeta.DELETE_TIME)));
			this.setFileIds(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.FILE_IDS)));
			this.setUpdateBy(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.UPDATE_BY)));
			this.setToPosStatus(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.TO_POS_STATUS)));
			this.setDeleteBy(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.DELETE_BY)));
			this.setTransferType(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.TRANSFER_TYPE)));
			this.setPersonId(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.PERSON_ID)));
			this.setId(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.ID)));
			this.setOperTime(DataParser.parse(Date.class, r.getValue(PersonTransferActMeta.OPER_TIME)));
			this.setStatus(DataParser.parse(String.class, r.getValue(PersonTransferActMeta.STATUS)));
			return true;
		} else {
			try {
				this.setNote( (String)r.getValue(PersonTransferActMeta.NOTE));
				this.setOperUserId( (String)r.getValue(PersonTransferActMeta.OPER_USER_ID));
				this.setToOrgPos( (String)r.getValue(PersonTransferActMeta.TO_ORG_POS));
				this.setUpdateTime( (Date)r.getValue(PersonTransferActMeta.UPDATE_TIME));
				this.setTransferDate( (Date)r.getValue(PersonTransferActMeta.TRANSFER_DATE));
				this.setVersion( (Integer)r.getValue(PersonTransferActMeta.VERSION));
				this.setContent( (String)r.getValue(PersonTransferActMeta.CONTENT));
				this.setToPos( (String)r.getValue(PersonTransferActMeta.TO_POS));
				this.setCreateBy( (String)r.getValue(PersonTransferActMeta.CREATE_BY));
				this.setDeleted( (Integer)r.getValue(PersonTransferActMeta.DELETED));
				this.setToOrgPosStatus( (String)r.getValue(PersonTransferActMeta.TO_ORG_POS_STATUS));
				this.setCreateTime( (Date)r.getValue(PersonTransferActMeta.CREATE_TIME));
				this.setDeleteTime( (Date)r.getValue(PersonTransferActMeta.DELETE_TIME));
				this.setFileIds( (String)r.getValue(PersonTransferActMeta.FILE_IDS));
				this.setUpdateBy( (String)r.getValue(PersonTransferActMeta.UPDATE_BY));
				this.setToPosStatus( (String)r.getValue(PersonTransferActMeta.TO_POS_STATUS));
				this.setDeleteBy( (String)r.getValue(PersonTransferActMeta.DELETE_BY));
				this.setTransferType( (String)r.getValue(PersonTransferActMeta.TRANSFER_TYPE));
				this.setPersonId( (String)r.getValue(PersonTransferActMeta.PERSON_ID));
				this.setId( (String)r.getValue(PersonTransferActMeta.ID));
				this.setOperTime( (Date)r.getValue(PersonTransferActMeta.OPER_TIME));
				this.setStatus( (String)r.getValue(PersonTransferActMeta.STATUS));
				return true;
			} catch (Exception e) {
				return false;
			}
		}
	}
}